/******************************************************************************/
/*  Class AUTOMEM                                                             */
/*  PO: S. Maslyakov, rusoil.9@gmail.com                                      */
/*                                                                            */
/*  Revision:     1.0                                                         */
/*  Date:         2011/02/14 10:01:33                                         */
/******************************************************************************/


#include "data_types.h"
#include "TNKernel\tn.h"
#include "Auto\automem.h"




//==============================================================================
// App: Destructor
//==============================================================================
AUTOMEM::~AUTOMEM() {

    if (m_pBuff) {
        tn_fmem_release((TN_FMP *)m_memblock, m_pBuff);
    };
}
//==============================================================================
//==============================================================================


//==============================================================================
// App: Allocate mem - try
//==============================================================================
void * AUTOMEM::AllocMem() {
    if (m_pBuff) {
        return m_pBuff;
    };

    if (tn_fmem_get_polling((TN_FMP *)m_memblock, &m_pBuff) != TERR_NO_ERR) {
        m_pBuff = 0;
    };

    return m_pBuff;
}
//==============================================================================
//==============================================================================


//==============================================================================
// App: Allocate mem - blocked
//==============================================================================
void * AUTOMEM::AllocMemBlock(const uint32_t _tout) {
    if (m_pBuff) {
        return m_pBuff;
    };

    if (tn_fmem_get((TN_FMP *)m_memblock, &m_pBuff, _tout) != TERR_NO_ERR) {
        m_pBuff = 0;
    };

    return m_pBuff;
}
//==============================================================================
//==============================================================================


//==============================================================================
// App: Get pntr mem block
//==============================================================================
void * AUTOMEM::GetMemBlock() const {
    return m_pBuff;
}
//==============================================================================
//==============================================================================


//==============================================================================
// App: Get pntr mem pool
//==============================================================================
void * AUTOMEM::GetMemPool() const {
    return m_memblock;
}
//==============================================================================
//==============================================================================